//use std::str::Utf8Error;

//quick_error! {
    /// Error parsing DNS packet
    #[derive(Debug)]
    pub enum Error {
        /// Invalid compression pointer not pointing backwards
        /// when parsing label
        BadPointer,
        // {
        //     description("invalid compression pointer not pointing backwards \
        //                  when parsing label")
        // }
        /// Packet is smaller than header size
        HeaderTooShort,
        // {
        //     description("packet is smaller than header size")
        // }
        /// Packet ihas incomplete data
        UnexpectedEOF,
        // {
        //     description("packet is has incomplete data")
        // }
        /// Wrong (too short or too long) size of RDATA
        WrongRdataLength,
        // {
        //     description("wrong (too short or too long) size of RDATA")
        // }
        /// Packet has non-zero reserved bits
        ReservedBitsAreNonZero,
        // {
        //     description("packet has non-zero reserved bits")
        // }
        /// Label in domain name has unknown label format
        UnknownLabelFormat,
        // {
        //     description("label in domain name has unknown label format")
        // }
        /// Query type code is invalid
        InvalidQueryType(u16),
        // {
        //     description("query type code is invalid")
        //     display("query type {} is invalid", code)
        // }
        /// Query class code is invalid
        InvalidQueryClass(u16),
        // {
        //     description("query class code is invalid")
        //     display("query class {} is invalid", code)
        // }
        /// Type code is invalid
        InvalidType(u16),
        // {
        //     description("type code is invalid")
        //     display("type {} is invalid", code)
        // }
        /// Class code is invalid
        InvalidClass(u16),
        // {
        //     description("class code is invalid")
        //     display("class {} is invalid", code)
        // }
        /// Invalid characters encountered while reading label
        LabelIsNotAscii,
        // {
        //     description("invalid characters encountered while reading label")
        // }
        /// Invalid characters encountered while reading TXT
        TxtDataIsNotUTF8,
        // {
        //     description("invalid characters encountered while reading TXT")
        //     display("{:?}", error)
        // }
        /// Parser is in the wrong state
        WrongState,
        // {
        //     description("parser is in the wrong state")
        // }
        /// Additional OPT record found
        AdditionalOPT,
        // {
        //     description("additional OPT record found")
        // }
    }
//}
